type: object
properties:
  storageClass:
    description: |
      Имя storage class, который будет использоваться для всех компонентов Deckhouse (Prometheus, Grafana, OpenVPN и т. д.).
        * Если значение не указано, используется автоматически определяемый `global.discovery.defaultStorageClass`. Если `global.discovery.defaultStorageClass` не определен, используется `emptyDir`.
        * Этот параметр имеет смысл использовать только в исключительных ситуациях.
        * Этот параметр применяется в процессе включения модуля.
  highAvailability:
    description: |
      Параметр глобального включения *режима отказоустойчивости* для модулей, которые его поддерживают.

      Если значение не указано, оно определяется автоматически как `true` для кластеров с более чем одним master-узлом. В остальных случаях значение определяется как `false`.
  modules:
    description: |
      Общие параметры модулей Deckhouse.
    properties:
      ingressClass:
        description: |
          Класс Ingress-контроллера ([Ingress class](https://kubernetes.io/docs/concepts/services-networking/ingress/#ingress-class)), используемый для модулей Deckhouse.
      publicDomainTemplate:
        description: |
          Шаблон DNS-имен c ключом `%s` в качестве динамической части строки.

          Модули Deckhouse используют этот шаблон при создании Ingress-ресурсов.

          Например, для шаблона `%s.kube.company.my` модуль prometheus создаст Ingress-ресурс на адрес `grafana.kube.company.my` для доступа к Grafana.

          **Обратите внимание:**
          - Нельзя использовать в кластере DNS-имена (создавать соответствующие Ingress-ресурсы), подпадающие под указанный шаблон. Это может вызвать пересечения с создаваемыми Deckhouse Ingress-ресурсами.
          - Домен, используемый в шаблоне, не должен совпадать с доменом, указанным в параметре [clusterDomain](https://deckhouse.ru/documentation/v1/installing/configuration.html#clusterconfiguration-clusterdomain). Например, если `clusterDomain` установлен в `cluster.local` (значение по умолчанию), то `publicDomainTemplate` не может быть `%s.cluster.local`.

          Если параметр не указан, Ingress-ресурсы создаваться не будут.
      placement:
        description: |
          Настройки, определяющие расположение компонентов модулей Deckhouse по умолчанию.
        properties:
          customTolerationKeys:
            description: |
              Список ключей пользовательских toleration.

              Необходимо указывать, чтобы позволить планировщику размещать критически важные компоненты Deckhouse, такие как cni и csi, на выделенных узлах.
      https:
        description: |
          Способ реализации протокола HTTPS, используемый модулями Deckhouse.
        properties:
          mode:
            description: |
              Режим работы HTTPS:
              * `CertManager` — модули Deckhouse будут работать по HTTPS, самостоятельно заказывая сертификат с помощью ClusterIssuer, указанного в параметре `certManager.clusterIssuerName`;
              * `CustomCertificate` — модули Deckhouse будут работать по HTTPS, используя сертификат из пространства имен `d8-system`;
              * `Disabled` — модули Deckhouse будут работать только по HTTP (некоторые модули могут не работать, например [user-authn](https://deckhouse.ru/documentation/v1/modules/150-user-authn/));
              * `OnlyInURI` — модули Deckhouse будут работать по HTTP, подразумевая, что перед ними стоит внешний HTTPS-балансировщик, который терминирует HTTPS. Балансировщик должен обеспечивать перенаправление с HTTP на HTTPS.
          certManager:
            properties:
              clusterIssuerName:
                description: |
                  Имя `ClusterIssuer`, используемого модулями Deckhouse.

                  В модуле [cert-manager](https://deckhouse.ru/documentation/v1/modules/101-cert-manager/) доступны следующие `ClusterIssuer`: `letsencrypt`, `letsencrypt-staging`, `selfsigned`, `clouddns`, `cloudflare`, `digitalocean`, `route53`. Также вы можете использовать свой `ClusterIssuer`.
          customCertificate:
            properties:
              secretName:
                description: |
                  Имя Secret'а в пространстве имен `d8-system`, который будет использоваться модулями Deckhouse.

                  Указанный Secret должен быть в формате [kubernetes.io/tls](https://kubernetes.github.io/ingress-nginx/user-guide/tls/#tls-secrets).
      resourcesRequests:
        description: |
          Количество ресурсов (CPU и памяти), выделяемых для работы компонентов Deckhouse, работающих на каждом узле кластера (обычно это DaemonSet'ы, например `cni-flannel`, `monitoring-ping`).

          [Подробнее](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#resource-units-in-kubernetes) про единицы измерения ресурсов.
        properties:
          controlPlane:
            description: |
              Количество ресурсов (CPU и памяти), выделяемых для компонентов control plane, работающих на каждом master-узле кластера. Не работает для not-managed-облаков (например, GKE).
            properties:
              cpu:
                description: |
                  Количество CPU, выделяемых для компонентов control plane, работающих на каждом master-узле кластера.
              memory:
                description: |
                  Объем памяти, выделяемой для компонентов control plane, работающих на каждом master-узле кластера.
          everyNode:
            description: |
              Количество ресурсов (CPU и памяти), выделяемых для компонентов Deckhouse, работающих на каждом узле кластера.
            properties:
              cpu:
                description: |
                  Количество CPU, выделяемых на каждом узле.
              memory:
                description: |
                  Объем памяти, выделяемой на каждом узле.
          masterNode:
            description: |
              Количество ресурсов (CPU и памяти), выделяемых для компонентов Deckhouse, работающих на каждом master-узле (в том числе `control plane`, если `control plane` управляется Deckhouse).

              > **Внимание!** В случае managed-кластера (Kubernetes as a Service) Deckhouse может не управлять компонентами `control plane`. В таких случаях все указанные в параметре `masterNode` ресурсы отдаются компонентам Deckhouse.
            properties:
              cpu:
                description: |
                  Количество CPU, выделяемых на каждом master-узле **дополнительно** к указанному в параметре `everyNode.cpu`:
                    * Для кластера, управляемого Deckhouse, значение по умолчанию определяется автоматически по формуле: `.status.allocatable.cpu` минимального master-узла (но не более `4` (ядер CPU)) минус количество CPU, указанное в параметре `everyNode.cpu`.
                    * Для managed-кластера значение по умолчанию: `1` (одно ядро CPU) минус количество CPU, указанное в параметре `everyNode.cpu`.
              memory:
                description: |
                  Объем памяти, выделяемой на каждом master-узле, **дополнительно** к указанному в параметре `everyNode.memory`:
                    * Для кластера, управляемого Deckhouse, значение по умолчанию определяется автоматически по формуле: `.status.allocatable.memory` минимального master-узла (но не более `8Gi`) минус значение, указанное в параметре `everyNode.memory`.
                    * Для managed-кластера значение по умолчанию: `1Gi` минус значение, указанное в параметре `everyNode.memory`.
      proxy:
        description: |
          Глобальная настройка proxy для модулей.
        properties:
          httpProxy:
            description: |
              Proxy URL для HTTP-запросов.
          httpsProxy:
            description: |
              Proxy URL для HTTPS-запросов.
          noProxy:
            description: |
              Список IP и доменных имен, для которых проксирование не применяется. Для указания wildcard-домена используйте имя с точкой в качестве префикса (например, `.example.com`).
